package com.atguigu.ssyx.client.product;

import com.atguigu.ssyx.model.product.Category;
import com.atguigu.ssyx.model.product.SkuInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * feign远程调用,用于商品模块远程调用
 */
@Api(tags = "商品模块远程调用接口")
@FeignClient(value = "service-product")
@RequestMapping("api/product")
public interface ProductFeignClient {

    /**
     * 根据分类id获取分类信息
     * @param categoryId
     * @return
     */
    @ApiOperation("根据分类id获取分类信息")
    @GetMapping("inner/getCategory/{categoryId}")
    public Category getCategory(@PathVariable("categoryId") Long categoryId);

    /**
     * 根据skuId获取sku信息
     * @param skuId
     * @return
     */
    @ApiOperation("根据skuId获取sku信息")
    @GetMapping("inner/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable Long skuId);

    // 根据skuId列表获得sku信息
    @ApiOperation("根据skuId列表获得sku信息")
    @PostMapping("inner/findSkuInfoList")
    public List<SkuInfo> findSkuInfoList(@RequestBody List<Long> skuIdList);

    // 根据关键字匹配sku信息
    @ApiOperation("根据关键字匹配sku信息")
    @GetMapping("inner/findSkuInfoByKeyword/{keyword}")
    public List<SkuInfo> findSkuInfoByKeyword(@PathVariable("keyword") String keyword);

    // 根据分类id列表获取分类信息
    @ApiOperation("根据分类id列表获取分类信息")
    @PostMapping("inner/findCategoryList")
    public List<Category> findCategoryList(@RequestBody List<Long> categoryIdList);

    // 获取所有分类
    @ApiOperation("获取所有分类")
    @GetMapping("inner/findAllCategoryList")
    public List<Category> findAllCategoryList();

    // 获取新人专享
    @ApiOperation("获取新人专享")
    @GetMapping("inner/findNewPersonSkuInfoList")
    public List<SkuInfo> findNewPersonSkuInfoList();
}
